home *** CD-ROM | disk | FTP | other *** search
- /* DMA.H
- *
- * DMA handling routines
- *
- * $Id: dma.h,v 1.2 1997/01/16 18:41:59 pekangas Exp $
- *
- * Copyright 1996,1997 Housemarque Inc.
- *
- * This file is part of the MIDAS Sound System, and may only be
- * used, modified and distributed under the terms of the MIDAS
- * Sound System license, LICENSE.TXT. By continuing to use,
- * modify or distribute this file you indicate that you have
- * read the license and understand and accept it fully.
- */
-
-
- #ifndef __DMA_H
- #define __DMA_H
-
-
-
- /****************************************************************************\
- * struct dmaBuffer
- * ----------------
- * Description: DMA playing buffer
- \****************************************************************************/
-
- typedef struct
- {
- #ifdef __16__
- unsigned bufferSeg; /* DMA buffer segment (offset is
- zero) */
- #endif
- #ifdef __PROTMODE__
- unsigned dosSeg; /* DMA buffer DOS segment */
- unsigned dpmiSel; /* DMA buffer DPMI selector */
- #endif
- ulong startAddr; /* buffer physical start address */
- unsigned bufferLen; /* DMA buffer length in bytes */
- void *memBlk; /* internal, used for unallocating */
- int channel; /* channel on which the buffer is
- being played or -1 */
- #if defined(__PROTMODE__) && !defined(__FLATMODE__)
- void far *dataPtr; /* pointer to DMA buffer data */
- #else
- void *dataPtr; /* pointer to DMA buffer data *//*!!*/
- #endif
- } dmaBuffer;
-
-
-
-
- /****************************************************************************\
- * struct dmaChannel
- * -----------------
- * Description: DMA channel data used by DMA functions.
- \****************************************************************************/
-
- typedef struct
- {
- unsigned number; /* DMA channel number */
- unsigned bit; /* DMA channel bit for registers */
- unsigned baseAddr; /* base address port */
- unsigned wordCount; /* word count port */
- unsigned request; /* request port */
- unsigned singleMask; /* mask port */
- unsigned mode; /* mode port */
- unsigned clearFF; /* clear flip-flop port */
- unsigned page; /* page port */
- } dmaChannel;
-
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-
-
- /****************************************************************************\
- *
- * Function: int dmaAllocBuffer(unsigned size, dmaBuffer *buf);
- *
- * Description: Allocates a DMA buffer (totally inside a 64K physical page)
- *
- * Input: unsigned size size of buffer in bytes
- * dmaBuffer *buf pointer to DMA buffer information
- *
- * Returns: MIDAS error code. DMA buffer information is written to *buf.
- *
- \****************************************************************************/
-
- int CALLING dmaAllocBuffer(unsigned size, dmaBuffer *buf);
-
-
-
-
- /****************************************************************************\
- *
- * Function: int dmaFreeBuffer(dmaBuffer *buf);
- *
- * Description: Deallocates an allocated DMA buffer
- *
- * Input: dmaBuffer *buf pointer to DMA buffer information
- *
- * Returns: MIDAS error code
- *
- \****************************************************************************/
-
- int CALLING dmaFreeBuffer(dmaBuffer *buf);
-
-
-
-
- /****************************************************************************\
- *
- * Function: int dmaPlayBuffer(dmaBuffer *buf, unsigned channel,
- * unsigned autoInit);
- *
- * Description: Plays a DMA buffer
- *
- * Input: dmaBuffer *buf pointer to DMA buffer information
- * unsigned channel DMA channel number
- * unsigned autoInit 1 if autoinitializing DMA is used, 0
- * if not
- *
- * Returns: MIDAS error code
- *
- \****************************************************************************/
-
- int CALLING dmaPlayBuffer(dmaBuffer *buf, unsigned channel,
- unsigned autoInit);
-
-
-
-
- /****************************************************************************\
- *
- * Function: int dmaStop(unsigned channel);
- *
- * Description: Stops DMA playing
- *
- * Input: unsigned channel DMA channel number
- *
- * Returns: MIDAS error code
- *
- \****************************************************************************/
-
- int CALLING dmaStop(unsigned channel);
-
-
-
-
- /****************************************************************************\
- *
- * Function: int dmaGetPos(dmaBuffer *buf, unsigned *pos);
- *
- * Description: Reads the DMA playing position
- *
- * Input: dmaBuffer *buf pointer to DMA buffer information
- * unsigned *pos pointer to playing position
- *
- * Returns: MIDAS error code. DMA playing position from the beginning
- * of the buffer, in bytes, is written to *pos.
- *
- \****************************************************************************/
-
- int CALLING dmaGetPos(dmaBuffer *buf, unsigned *pos);
-
-
-
-
- #ifdef __cplusplus
- }
- #endif
-
-
-
-
- /****************************************************************************\
- * enum dmaFunctIDs
- * ----------------
- * Description: ID numbers for DMA handling functions
- \****************************************************************************/
-
- enum dmaFunctIDs
- {
- ID_dmaAllocBuffer = ID_dma,
- ID_dmaFreeBuffer,
- ID_dmaPlayBuffer,
- ID_dmaStop,
- ID_dmaGetPos
- };
-
-
- #endif
-
-
- /*
- * $Log: dma.h,v $
- * Revision 1.2 1997/01/16 18:41:59 pekangas
- * Changed copyright messages to Housemarque
- *
- * Revision 1.1 1996/05/22 20:49:33 pekangas
- * Initial revision
- *
- */